package com.cbd.basic.design_pattern.service.impl;

import com.cbd.basic.design_pattern.service.FinManageStrategy;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public abstract class AbstractFinManageTemplate<T> implements FinManageStrategy<T> {

    @Override
    public void contractRegister(T obj) {
        // 保存合同信息
        String contractId = saveContractInfo(obj);
        // 保存利率信息
        log.info("保存利率信息");
        // 保存担保方式
        log.info("保存担保方式");
        // 保存增信方式
        log.info("保存增信方式");
        // 保存费用信息
        log.info("保存费用信息");
        // 占用融资计划
        log.info("占用融资计划");
        // 占用授信
        log.info("占用授信");
        // 提交审批流
        submitApproval();
        int a = 0;
        log.info("a = {}", a);
    }

    protected abstract String saveContractInfo(T obj);

    protected abstract void submitApproval();

    protected void saveInterestRate(String contractId) {
        log.info("保存利率信息");
    }
}
